home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / corridor / code.lua next >
Text File  |  2005-07-16  |  14KB  |  423 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky02.ogg")
  8.     local pokus = getRestartCount()
  9.     local luminous = {
  10.         small, big,
  11.         leftpes, rightpes, vypinac,
  12.         dvere1, dvere2, dvere3, dvere4,
  13.         poklop1, poklop2
  14.     }
  15.     addHeadAnim(small, "images/fishes/small", "head_dark", "dark_00")
  16.     addHeadAnim(small, "images/fishes/small", "head_dark", "dark_01")
  17.     addHeadAnim(big, "images/fishes/big", "head_dark", "dark_00")
  18.     addHeadAnim(big, "images/fishes/big", "head_dark", "dark_01")
  19.  
  20.     -- -------------------------------------------------------------
  21.     local function prog_init_room()
  22.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  23.  
  24.         room.oci = 0
  25.         room.bliknul = 0
  26.         room.last = random(2)
  27.         room.rpesmala = 0
  28.         room.rpesvelka = 0
  29.         room.nerusit = 0
  30.         room.pesmluvi = 0
  31.         room.dark = false
  32.         local darked = false
  33.  
  34.         return function()
  35.             if room.dark then
  36.                 for key, model in pairs({small, big}) do
  37.                     if model:isAlive() then
  38.                         local action = model:getAction()
  39.                         if action == "turn" or action == "activate" or random(100) < 6 then
  40.                             model_useSpecialAnim(model.index, "head_dark", 1)
  41.                         else
  42.                             model_useSpecialAnim(model.index, "head_dark", 0)
  43.                         end
  44.                     end
  45.                 end
  46.  
  47.                 if not darked then
  48.                     game_changeBg("images/"..codename.."/dark.png")
  49.                     for key, model in pairs(getModelsTable()) do
  50.                         if not isIn(model, luminous) then
  51.                             model:setEffect("invisible")
  52.                         end
  53.                     end
  54.                     darked = true
  55.                 end
  56.             elseif darked then
  57.                 game_changeBg("images/"..codename.."/chodba-p2.png")
  58.                 for key, model in pairs(getModelsTable()) do
  59.                     model:setEffect("none")
  60.                 end
  61.                 darked = false
  62.             end
  63.  
  64.             if no_dialog() and isReady(small) and isReady(big) then
  65.                 if room.dark and room.tma > 0 then
  66.                     room.tma = room.tma - 1
  67.                 end
  68.                 if not room.dark then
  69.                     room.tma = random(100) + 50
  70.                 end
  71.                 if room.bliknul == 1 then
  72.                     room.bliknul = room.bliknul + 1
  73.                     addm(random(10) + 10, "ch-m-rozsvit"..random(3))
  74.                     addv(random(15) + 2, "ch-v-pockej"..random(3))
  75.                 elseif room.bliknul == 3 then
  76.                     room.bliknul = room.bliknul + 1
  77.                     addm(random(10), "ch-m-blik"..random(2))
  78.                     room.oci = room.bliknul + 2
  79.                 elseif room.oci < room.bliknul and room.oci > 0 then
  80.                     if random(100) < 40 then
  81.                         room.oci = 0
  82.                         addm(3, "ch-m-blik0")
  83.                     else
  84.                         room.oci = room.bliknul
  85.                     end
  86.                 elseif room.tma == 0 then
  87.                     room.tma = random(300) + 100
  88.                     if random(100) < 80 then
  89.                         room.last = 1 - room.last
  90.                     end
  91.                     switch(room.last){
  92.                         [0] = function()
  93.                             addv(0, "ch-v-halo"..random(3))
  94.                             addm(random(20), "ch-m-tady"..random(3))
  95.                         end,
  96.                         [1] = function()
  97.                             addm(0, "ch-m-bojim"..random(3))
  98.                             addv(random(20), "ch-v-neboj"..random(3))
  99.                         end,
  100.                     }
  101.                 elseif room.rpesvelka == 0 and big.Y >= 20 and random(100) < 2 then
  102.                     room.rpesvelka = 1
  103.                     room.nerusit = 1
  104.                     pom1 = random(4)
  105.                     addv(10, "ch-v-robopes")
  106.                     addm(random(5), "ch-m-ten")
  107.                     addv(random(10), "ch-v-zapada")
  108.                     addm(5 + random(10), "ch-m-odpoved"..pom1)
  109.                     if random(100) < 70 then
  110.                         addv(random(20) + 10, "ch-v-smysl")
  111.                         if random(100) < 80 then
  112.                             addm(random(10) + 5, "ch-m-vubec")
  113.                         end
  114.                     end
  115.                     room.cpsa = random(2)
  116.                     planDialogSet(random(20), "ch-r-nevsimej"..random(3), 10, room, "pesmluvi")
  117.                     planDialogSet(random(20), "ch-r-hracka", 10, room, "pesmluvi")
  118.                     planDialogSet(10 + random(20), "ch-r-ikdyz"..random(4), 10, room, "pesmluvi")
  119.                     planDialogSet(10 + random(20), "ch-r-anavic"..pom1, 10, room, "pesmluvi")
  120.                     planSet(room, "nerusit", 0)
  121.                 elseif room.rpesmala == 0 and small.Y >= 28 and (small.X <= 11 or small.X >= 20) and random(100) < 3 then
  122.                     if room.rpesvelka == 1 and random(3) < 2 then
  123.                         addv(2, "ch-v-pozor")
  124.                     else
  125.                         addm(2, "ch-m-doufam")
  126.                     end
  127.                     room.rpesmala = 1
  128.                 end
  129.             end
  130.         end
  131.     end
  132.  
  133.     -- -------------------------------------------------------------
  134.     local function prog_init_rightpes()
  135.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  136.  
  137.         rightpes.faze = 0
  138.  
  139.         return function()
  140.             if rightpes.faze == 2 then
  141.                 rightpes.faze = 0
  142.             else
  143.                 rightpes.faze = rightpes.faze + 1
  144.             end
  145.             if room.dark then
  146.                 rightpes.afaze = rightpes.faze + 3
  147.             else
  148.                 rightpes.afaze = rightpes.faze
  149.                 if room.pesmluvi ~= 0 and room.cpsa == 1 and random(2) == 0 then
  150.                     rightpes.afaze = rightpes.afaze + 6
  151.                 end
  152.             end
  153.             rightpes:updateAnim()
  154.         end
  155.     end
  156.  
  157.     -- -------------------------------------------------------------
  158.     local function prog_init_leftpes()
  159.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  160.  
  161.         leftpes.faze = 0
  162.  
  163.         return function()
  164.             if leftpes.faze == 2 then
  165.                 leftpes.faze = 0
  166.             else
  167.                 leftpes.faze = leftpes.faze + 1
  168.             end
  169.             if room.dark then
  170.                 leftpes.afaze = leftpes.faze + 3
  171.             else
  172.                 leftpes.afaze = leftpes.faze
  173.                 if room.pesmluvi ~= 0 and room.cpsa == 0 and random(2) == 0 then
  174.                     leftpes.afaze = leftpes.afaze + 6
  175.                 end
  176.             end
  177.             leftpes:updateAnim()
  178.         end
  179.     end
  180.  
  181.     -- -------------------------------------------------------------
  182.     local function prog_init_vypinac()
  183.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  184.  
  185.         vypinac.stav = 0
  186.         local afterLoad = true
  187.  
  188.         return function()
  189.             if afterLoad then
  190.                 afterLoad = false
  191.                 return
  192.             end
  193.  
  194.             switch(vypinac.stav){
  195.                 [0] = function()
  196.                     if (vypinac.dir == dir_left or vypinac.dir == dir_right) and level_isNewRound() then
  197.                         vypinac.stav = vypinac.stav + 1
  198.                         vypinac.afaze = 1
  199.                         vypinac:talk("ch-x-click1")
  200.                     end
  201.                 end,
  202.                 [1] = function()
  203.                     vypinac.stav = vypinac.stav + 1
  204.                     vypinac.afaze = 2
  205.                     room.dark = true
  206.                     room.bliknul = room.bliknul + 1
  207.                     if room.nerusit == 0 then
  208.                         game_killPlan()
  209.                     end
  210.                 end,
  211.                 [2] = function()
  212.                     if (vypinac.dir == dir_left or vypinac.dir == dir_right) and level_isNewRound() then
  213.                         vypinac.stav = 0
  214.                         vypinac.afaze = 0
  215.                         room.dark = false
  216.                         vypinac:talk("ch-x-click2")
  217.                         room.bliknul = room.bliknul + 1
  218.                         if room.nerusit == 0 then
  219.                             game_killPlan()
  220.                         end
  221.                     end
  222.                 end,
  223.             }
  224.             vypinac:updateAnim()
  225.         end
  226.     end
  227.  
  228.     -- -------------------------------------------------------------
  229.     local function prog_init_dvere1()
  230.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  231.  
  232.         dvere1.faze = 0
  233.         dvere1.pocit = 2
  234.  
  235.         return function()
  236.             if dvere1.pocit > 0 then
  237.                 dvere1.pocit = dvere1.pocit - 1
  238.             else
  239.                 dvere1.pocit = 5
  240.                 dvere1.faze = 1 - dvere1.faze
  241.             end
  242.             if room.dark then
  243.                 dvere1.afaze = dvere1.faze + 2
  244.             else
  245.                 dvere1.afaze = dvere1.faze
  246.             end
  247.             dvere1:updateAnim()
  248.         end
  249.     end
  250.  
  251.     -- -------------------------------------------------------------
  252.     local function prog_init_dvere2()
  253.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  254.  
  255.         dvere2.faze = 0
  256.         dvere2.pocit = 1
  257.  
  258.         return function()
  259.             if dvere2.pocit > 0 then
  260.                 dvere2.pocit = dvere2.pocit - 1
  261.             else
  262.                 dvere2.pocit = 1
  263.                 dvere2.faze = 1 - dvere2.faze
  264.             end
  265.             if room.dark then
  266.                 dvere2.afaze = dvere2.faze + 2
  267.             else
  268.                 dvere2.afaze = dvere2.faze
  269.             end
  270.             dvere2:updateAnim()
  271.         end
  272.     end
  273.  
  274.     -- -------------------------------------------------------------
  275.     local function prog_init_dvere3()
  276.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  277.  
  278.         dvere3.faze = 0
  279.         dvere3.pocit = 2
  280.  
  281.         return function()
  282.             if dvere3.pocit > 0 then
  283.                 dvere3.pocit = dvere3.pocit - 1
  284.             else
  285.                 dvere3.pocit = 4
  286.                 dvere3.faze = 1 - dvere3.faze
  287.             end
  288.             if room.dark then
  289.                 dvere3.afaze = dvere3.faze + 2
  290.             else
  291.                 dvere3.afaze = dvere3.faze
  292.             end
  293.             dvere3:updateAnim()
  294.         end
  295.     end
  296.  
  297.     -- -------------------------------------------------------------
  298.     local function prog_init_dvere4()
  299.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  300.  
  301.         dvere4.faze = 0
  302.         dvere4.pocit = 1
  303.  
  304.         return function()
  305.             if dvere4.pocit > 0 then
  306.                 dvere4.pocit = dvere4.pocit - 1
  307.             else
  308.                 dvere4.pocit = 2
  309.                 dvere4.faze = 1 - dvere4.faze
  310.             end
  311.             if room.dark then
  312.                 dvere4.afaze = dvere4.faze + 2
  313.             else
  314.                 dvere4.afaze = dvere4.faze
  315.             end
  316.             dvere4:updateAnim()
  317.         end
  318.     end
  319.  
  320.     -- -------------------------------------------------------------
  321.     local function prog_init_poklop2()
  322.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  323.  
  324.         poklop2.faze = 1
  325.         poklop2.pocit = 1
  326.  
  327.         return function()
  328.             if poklop2.pocit > 0 then
  329.                 poklop2.pocit = poklop2.pocit - 1
  330.             else
  331.                 poklop2.pocit = 3
  332.                 poklop2.faze = 1 - poklop2.faze
  333.             end
  334.             if room.dark then
  335.                 poklop2.afaze = poklop2.faze + 2
  336.             else
  337.                 poklop2.afaze = poklop2.faze
  338.             end
  339.             poklop2:updateAnim()
  340.         end
  341.     end
  342.  
  343.     -- -------------------------------------------------------------
  344.     local function prog_init_poklop1()
  345.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  346.  
  347.         poklop1.faze = 0
  348.         poklop1.pocit = 1
  349.  
  350.         return function()
  351.             if poklop1.pocit > 0 then
  352.                 poklop1.pocit = poklop1.pocit - 1
  353.             else
  354.                 poklop1.pocit = 3
  355.                 poklop1.faze = 1 - poklop1.faze
  356.             end
  357.             if room.dark then
  358.                 poklop1.afaze = poklop1.faze + 2
  359.             else
  360.                 poklop1.afaze = poklop1.faze
  361.             end
  362.             poklop1:updateAnim()
  363.         end
  364.     end
  365.  
  366.     -- --------------------
  367.     local update_table = {}
  368.     local subinit
  369.     subinit = prog_init_room()
  370.     if subinit then
  371.         table.insert(update_table, subinit)
  372.     end
  373.     subinit = prog_init_rightpes()
  374.     if subinit then
  375.         table.insert(update_table, subinit)
  376.     end
  377.     subinit = prog_init_leftpes()
  378.     if subinit then
  379.         table.insert(update_table, subinit)
  380.     end
  381.     subinit = prog_init_vypinac()
  382.     if subinit then
  383.         table.insert(update_table, subinit)
  384.     end
  385.     subinit = prog_init_dvere1()
  386.     if subinit then
  387.         table.insert(update_table, subinit)
  388.     end
  389.     subinit = prog_init_dvere2()
  390.     if subinit then
  391.         table.insert(update_table, subinit)
  392.     end
  393.     subinit = prog_init_dvere3()
  394.     if subinit then
  395.         table.insert(update_table, subinit)
  396.     end
  397.     subinit = prog_init_dvere4()
  398.     if subinit then
  399.         table.insert(update_table, subinit)
  400.     end
  401.     subinit = prog_init_poklop2()
  402.     if subinit then
  403.         table.insert(update_table, subinit)
  404.     end
  405.     subinit = prog_init_poklop1()
  406.     if subinit then
  407.         table.insert(update_table, subinit)
  408.     end
  409.     return update_table
  410. end
  411. local update_table = prog_init()
  412.  
  413.  
  414. -- -----------------------------------------------------------------
  415. -- Update
  416. -- -----------------------------------------------------------------
  417. function prog_update()
  418.     for key, subupdate in pairs(update_table) do
  419.         subupdate()
  420.     end
  421. end
  422.  
  423.